package com.wiz.common.util;

import java.util.ArrayList;
import java.util.List;

import com.wiz.web.vo.to.PRConfigTO;

/**
 * 会员油品权限工具类
 * @author xdzheng@wiz-tech.com.cn
 * @version 创建时间: 2016年5月11日 下午6:35:35
 */
public class PRUtil {
	
	public static final String DEF_PR_BINARY_STR = "0000000000000";

	public static final String PR_BINARY_STR = "1111111111111";
	
	/**
	 * 获取油品高地位字符串,设置进member中
	 * @param prConfigTOs
	 * @return String
	 */
	public static String toBinaryString(List<PRConfigTO> prConfigTOs){
		StringBuilder sb=new StringBuilder();
		for(int i=0;i<DEF_PR_BINARY_STR.length();i++){
			if(hasPRPermission(Long.valueOf(i+1), prConfigTOs)){
				sb.append(1);
			}else {
				sb.append(String.valueOf(DEF_PR_BINARY_STR.charAt(i)));
			}
		}
		return sb.toString();
	}
	
	/**
	 * 获取PRId list
	 * @param PRPermissionStr
	 * @return List<Long> 
	 */
    public static List<Long> toIdList(String PRPermissionStr){
    	List<Long> PRIds=new ArrayList<Long>();
    	for(Integer i=0; i<PRPermissionStr.length(); i++){
    		Long PRId=Long.valueOf(i+1);
    		if(String.valueOf(PRPermissionStr.charAt(i)).equals("1"))
    			PRIds.add(PRId);
    	}
    	return PRIds;    
    }
    
    /**
	 * 获取Configlist
	 * @param PRPermissionStr
	 * @return List<Long> 
	 */
    public static List<PRConfigTO> toPRConfigList(String PRPermissionStr){
    	List<PRConfigTO> configList = new ArrayList<PRConfigTO>();
    	for(Integer i=0; i<PRPermissionStr.length(); i++){
    		Long prId = Long.valueOf(i+1);
    		if(String.valueOf(PRPermissionStr.charAt(i)).equals("1")){
    			PRConfigTO to = new PRConfigTO();
    			to.setPrId(prId);
    			configList.add(to);
    		}
    	}
    	return configList;    
    }
    
    /**
     * 判断是否有油品权限
     * @param PRPermissionStr
     * @param PRId
     * @return boolean
     */
    public static boolean checkPRPermission(String PRPermissionStr, Long PRId){
    	List<Long> PRIds=toIdList(PRPermissionStr);
    	for (Long permissionPRId : PRIds) {
			if(permissionPRId==PRId)
				return true;
		}
    	return false;
    }
    
    /**
     * 转换高地位时判断是否有权限
     * @param index
     * @param prConfigTOs
     * @return boolean
     */
	private static boolean hasPRPermission(Long index, List<PRConfigTO> prConfigTOs) {
		for (PRConfigTO prConfigTO : prConfigTOs) {
			if(prConfigTO.getPrId()==index)
				return true;
		}
		return false;
	}

	public static void main(String[] args) {
		String test1="1010010000000";
		List<Long> PRIds=PRUtil.toIdList(test1);
		List<PRConfigTO> prConfigTOs=new ArrayList<PRConfigTO>();
		for (Long long1 : PRIds) {
			System.out.println(long1);
			PRConfigTO prConfigTO=new PRConfigTO();
			prConfigTO.setPrId(long1);
			prConfigTOs.add(prConfigTO);
		}
		System.out.println(PRUtil.toBinaryString(prConfigTOs));
		System.out.println(PRUtil.checkPRPermission("1111111111111", 14L));
	}

}